#ifndef OCTREE_HH
# define OCTREE_HH

# include "../physic/object.hh"
# include "functor.hh"

class Octree
{
public:
  Octree (unsigned int size);
  ~Octree ();

  virtual void add_obj (Object* obj) = 0;
  virtual bool delete_obj (Object* obj) = 0;

  virtual void accept (PhysicFunctor* phy) = 0;
  virtual void accept (DisplayFunctor* disp) = 0;
  virtual void accept (MapFunctor* mf) = 0;

  unsigned int size () { return size_; }

protected:
  unsigned int size_;
};

#endif /// !OCTREE_HH
